package com.hanhai;

import java.time.*;

/**
 * @author weijingchen
 * @DateTime 2025-05-26
 */
public class LocalDateTimeTest {
    public static void main(String[] args) {
        //1、获取当前时间
        LocalDateTime now = LocalDateTime.now();
        System.out.println("当前时间是"+now);
        //2、获取指定时间
        LocalDateTime localDateTime = LocalDateTime.of(2025, 5, 25, 11, 56, 21);
        System.out.println("指定时间是"+localDateTime);
        //3、获取指定时间的年月日时分秒
        int year = localDateTime.getYear();
        int month = localDateTime.getMonthValue();
        int day = localDateTime.getDayOfMonth();
        int hour = localDateTime.getHour();
        int minute = localDateTime.getMinute();
        int second = localDateTime.getSecond();
        System.out.println("指定时间的年月日时分秒是"+year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second);
        //4、今天是当年的第几天
        int dayOfYear = localDateTime.getDayOfYear();
        System.out.println("今天是当年的第"+dayOfYear+"天");
        //5、今天是当月的第几天
        int dayOfMonth = localDateTime.getDayOfMonth();
        System.out.println("今天是当月的第"+dayOfMonth+"天");
        //6、今天是星期几
        int dayOfWeek = localDateTime.getDayOfWeek().getValue();
        System.out.println("今天是星期几"+dayOfWeek);
        //7、with方法
        System.out.println("----------------------with方法---------------------------");
        System.out.println("----------------------指定时间是2025-05-25T11:56:21--------------------------");
        LocalDateTime localDateTime1 = localDateTime.withYear(2026);
        System.out.println("修改年后的时间是"+localDateTime1);
        LocalDateTime localDateTime2 = localDateTime.withMonth(6);
        System.out.println("修改月后的时间是"+localDateTime2);
        LocalDateTime localDateTime3 = localDateTime.withDayOfMonth(25);
        System.out.println("修改日后的时间是"+localDateTime3);
        LocalDateTime localDateTime4 = localDateTime.withHour(12);
        System.out.println("修改小时后的时间是"+localDateTime4);
        LocalDateTime localDateTime5 = localDateTime.withMinute(12);
        System.out.println("修改分钟后的时间是"+localDateTime5);
        LocalDateTime localDateTime6 = localDateTime.withSecond(12);
        System.out.println("修改秒后的时间是"+localDateTime6);
        LocalDateTime localDateTime7 = localDateTime.withNano(12);
        System.out.println("修改纳秒后的时间是"+localDateTime7);
        LocalDateTime localDateTime8 = localDateTime.withDayOfYear(25);
        System.out.println("修改指定日期是当年的第25天后的时间是"+localDateTime8);
        LocalDateTime localDateTime9 = localDateTime.withDayOfMonth(25);
        System.out.println("修改指定日期是当月的第25天后的时间是"+localDateTime9);

        System.out.println("----------------------plus方法---------------------------");
        System.out.println("----------------------指定时间是2025-05-25T11:56:21---------------------------");
        LocalDateTime localDateTime10 = localDateTime.plusYears(1);
        System.out.println("增加一年后的时间是"+localDateTime10);
        LocalDateTime localDateTime11 = localDateTime.plusMonths(1);
        System.out.println("增加一个月后的时间是"+localDateTime11);
        LocalDateTime localDateTime12 = localDateTime.plusDays(1);
        System.out.println("增加一天后的时间是"+localDateTime12);
        LocalDateTime localDateTime13 = localDateTime.plusHours(1);
        System.out.println("增加一小时后的时间是"+localDateTime13);
        LocalDateTime localDateTime14 = localDateTime.plusMinutes(1);
        System.out.println("增加一分钟后的时间是"+localDateTime14);
        LocalDateTime localDateTime15 = localDateTime.plusSeconds(1);
        System.out.println("增加一秒后的时间是"+localDateTime15);
        LocalDateTime localDateTime16 = localDateTime.plusNanos(1);
        System.out.println("增加一纳秒后的时间是"+localDateTime16);
        LocalDateTime localDateTime17 = localDateTime.plusDays(1);
        System.out.println("增加一天后的时间是"+localDateTime17);
        LocalDateTime localDateTime18 = localDateTime.plusDays(7);
        System.out.println("增加一周后的时间是"+localDateTime18);
        LocalDateTime localDateTime19 = localDateTime.plusDays(30);
        System.out.println("增加一个月后的时间是"+localDateTime19);
        LocalDateTime localDateTime20 = localDateTime.plusDays(365);
        System.out.println("增加一年后的时间是"+localDateTime20);

        System.out.println("----------------------minus方法---------------------------");
        System.out.println("----------------------指定时间是2025-05-25T11:56:21---------------------------");
        LocalDateTime localDateTime21 = localDateTime.minusYears(1);
        System.out.println("减少一年后的时间是"+localDateTime21);
        LocalDateTime localDateTime22 = localDateTime.minusMonths(1);
        System.out.println("减少一个月后的时间是"+localDateTime22);
        LocalDateTime localDateTime23 = localDateTime.minusDays(1);
        System.out.println("减少一天后的时间是"+localDateTime23);
        LocalDateTime localDateTime24 = localDateTime.minusHours(1);
        System.out.println("减少一小时后的时间是"+localDateTime24);
        LocalDateTime localDateTime25 = localDateTime.minusMinutes(1);
        System.out.println("减少一分钟后的时间是"+localDateTime25);
        LocalDateTime localDateTime26 = localDateTime.minusSeconds(1);
        System.out.println("减少一秒后的时间是"+localDateTime26);
        LocalDateTime localDateTime27 = localDateTime.minusNanos(1);
        System.out.println("减少一纳秒后的时间是"+localDateTime27);
        LocalDateTime localDateTime28 = localDateTime.minusDays(1);
        System.out.println("减少一天后的时间是"+localDateTime28);
        LocalDateTime localDateTime29 = localDateTime.minusDays(7);
        System.out.println("减少一周后的时间是"+localDateTime29);
        LocalDateTime localDateTime30 = localDateTime.minusDays(30);
        System.out.println("减少一个月后的时间是"+localDateTime30);
        LocalDateTime localDateTime31 = localDateTime.minusDays(365);
        System.out.println("减少一年后的时间是"+localDateTime31);
        System.out.println("----------------------toInstant方法---------------------------");
        System.out.println("----------------------指定时间是2025-05-25T11:56:21---------------------------");
        Instant instant = localDateTime.toInstant(ZoneOffset.of("+8"));
        System.out.println("转换成Instant时间是"+instant);
        System.out.println("----------------------toLocalDate方法---------------------------");
        System.out.println("----------------------指定时间是2025-05-25T11:56:21---------------------------");
        LocalDate localDate = localDateTime.toLocalDate();

        System.out.println("转换成LocalDate时间是"+localDate);
        System.out.println("----------------------toLocalTime方法---------------------------");
        System.out.println("----------------------指定时间是2025-05-25T11:56:21---------------------------");
        LocalTime localTime = localDateTime.toLocalTime();

        System.out.println("转换成LocalTime时间是"+localTime);

    }
}
